package com.zjcloud.jwgl.mapper;

import java.util.List;
import com.zjcloud.jwgl.domain.AcAlgorithmBenchmark;

/**
 * 算法性能基准Mapper接口
 * 
 * @author zjcloud
 * @date 2024-12-19
 */
public interface AcAlgorithmBenchmarkMapper 
{
    /**
     * 查询算法性能基准
     * 
     * @param id 算法性能基准主键
     * @return 算法性能基准
     */
    public AcAlgorithmBenchmark selectAcAlgorithmBenchmarkById(Long id);

    /**
     * 查询算法性能基准列表
     * 
     * @param acAlgorithmBenchmark 算法性能基准
     * @return 算法性能基准集合
     */
    public List<AcAlgorithmBenchmark> selectAcAlgorithmBenchmarkList(AcAlgorithmBenchmark acAlgorithmBenchmark);

    /**
     * 新增算法性能基准
     * 
     * @param acAlgorithmBenchmark 算法性能基准
     * @return 结果
     */
    public int insertAcAlgorithmBenchmark(AcAlgorithmBenchmark acAlgorithmBenchmark);

    /**
     * 修改算法性能基准
     * 
     * @param acAlgorithmBenchmark 算法性能基准
     * @return 结果
     */
    public int updateAcAlgorithmBenchmark(AcAlgorithmBenchmark acAlgorithmBenchmark);

    /**
     * 删除算法性能基准
     * 
     * @param id 算法性能基准主键
     * @return 结果
     */
    public int deleteAcAlgorithmBenchmarkById(Long id);

    /**
     * 批量删除算法性能基准
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAcAlgorithmBenchmarkByIds(Long[] ids);

    /**
     * 根据基准编码查询算法性能基准
     * 
     * @param benchmarkCode 基准编码
     * @return 算法性能基准
     */
    public AcAlgorithmBenchmark selectByBenchmarkCode(String benchmarkCode);

    /**
     * 根据算法类型ID查询基准列表
     * 
     * @param algorithmTypeId 算法类型ID
     * @return 算法性能基准集合
     */
    public List<AcAlgorithmBenchmark> selectByAlgorithmTypeId(Long algorithmTypeId);

    /**
     * 根据数据集规模查询基准列表
     * 
     * @param datasetScale 数据集规模
     * @return 算法性能基准集合
     */
    public List<AcAlgorithmBenchmark> selectByDatasetScale(String datasetScale);

    /**
     * 查询活跃状态的基准列表
     * 
     * @return 算法性能基准集合
     */
    public List<AcAlgorithmBenchmark> selectActiveBenchmarks();

    /**
     * 根据难度等级查询基准列表
     * 
     * @param difficultyLevel 难度等级
     * @return 算法性能基准集合
     */
    public List<AcAlgorithmBenchmark> selectByDifficultyLevel(Integer difficultyLevel);

    /**
     * 根据优先级查询基准列表
     * 
     * @param priority 优先级
     * @return 算法性能基准集合
     */
    public List<AcAlgorithmBenchmark> selectByPriority(Integer priority);

    /**
     * 根据标签查询基准列表
     * 
     * @param tag 标签
     * @return 算法性能基准集合
     */
    public List<AcAlgorithmBenchmark> selectByTag(String tag);

    /**
     * 根据算法类型和数据集规模查询基准
     * 
     * @param algorithmTypeId 算法类型ID
     * @param datasetScale 数据集规模
     * @return 算法性能基准集合
     */
    public List<AcAlgorithmBenchmark> selectByAlgorithmTypeAndScale(Long algorithmTypeId, String datasetScale);

    /**
     * 更新基准测试结果
     * 
     * @param acAlgorithmBenchmark 算法性能基准
     * @return 结果
     */
    public int updateTestResults(AcAlgorithmBenchmark acAlgorithmBenchmark);

    /**
     * 增加测试次数
     * 
     * @param id 基准ID
     * @return 结果
     */
    public int incrementTestCount(Long id);

    /**
     * 增加通过次数
     * 
     * @param id 基准ID
     * @return 结果
     */
    public int incrementPassCount(Long id);
}